using System;
using System.Collections.Generic;
using System.Text;
using SMS.WinForms.Controls;

namespace SMS.WinForms
{
    /// <summary>
    /// The <see cref="SMS.WinForms.WizardFormNavigationEventArgs"/> class defines the event argument information when a
    /// <see cref="SMS.WinForms.WizardForm.Navigating"/> event is fired.
    /// </summary>
    public class WizardFormNavigationEventArgs : EventArgs
    {
        #region Declarations

        /// <summary>
        /// Stores a reference to the current page.
        /// </summary>
        private WizardPage _currentPage;

        /// <summary>
        /// Stores the navigation type.
        /// </summary>
        private WizardFormNavigationTypes _navigationType;

        /// <summary>
        /// Stores the name of the custom navigation.
        /// </summary>
        private String _navigationKey;

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="SMS.WinForms.WizardFormNavigationEventArgs"/> class.
        /// </summary>
        /// <param name="currentPageValue">The current page value.</param>
        public WizardFormNavigationEventArgs(WizardPage currentPageValue)
            : this(currentPageValue, WizardFormNavigationTypes.Next, String.Empty)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="SMS.WinForms.WizardFormNavigationEventArgs"/> class.
        /// </summary>
        /// <param name="currentPageValue">The current page value.</param>
        /// <param name="navigationValue">The navigation value.</param>
        public WizardFormNavigationEventArgs(WizardPage currentPageValue, WizardFormNavigationTypes navigationValue)
            : this(currentPageValue, navigationValue, String.Empty)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="SMS.WinForms.WizardFormNavigationEventArgs"/> class.
        /// </summary>
        /// <param name="currentPageValue">The current page value.</param>
        /// <param name="navigationType">The navigation value.</param>
        /// <param name="navigationKey">The custom navigation value.</param>
        public WizardFormNavigationEventArgs(
            WizardPage currentPageValue, 
            WizardFormNavigationTypes navigationType, 
            String navigationKey)
        {
            _currentPage = currentPageValue;
            _navigationType = navigationType;
            _navigationKey = navigationKey;
        }

        #endregion

        #region Properties

        /// <summary>
        /// Gets the current page.
        /// </summary>
        /// <value>The current page.</value>
        public WizardPage CurrentPage
        {
            get { return _currentPage; }
        }

        /// <summary>
        /// Gets or sets the type of the navigation.
        /// </summary>
        /// <value>The type of the navigation.</value>
        public WizardFormNavigationTypes NavigationType
        {
            get 
            {
                return _navigationType; 
            }
            set
            {
                _navigationType = value;
            }
        }

        /// <summary>
        /// Gets or sets the navigation key.
        /// </summary>
        /// <value>The navigation key.</value>
        public String NavigationKey
        {
            get 
            {
                return _navigationKey; 
            }
            set
            {
                _navigationKey = value;
            }
        }

        #endregion
    }
}
